import { defineStore } from 'pinia';
import { ref, computed } from 'vue';
import type { Store } from '@/types/store';
import { fetchStores } from '@/api/store';

export const useAppStore = defineStore('app', () => {
  // 所有门店列表
  const stores = ref<Store[]>([]);
  // 当前选中的门店ID
  const currentStoreId = ref<number | null>(null);

  /**
   * 当前选中的门店对象
   */
  const currentStore = computed(() => {
    if (currentStoreId.value) {
      return stores.value.find(s => s.id === currentStoreId.value);
    }
    // 如果没有选中的ID，默认返回第一个
    return stores.value.length > 0 ? stores.value[0] : null;
  });

  /**
   * 从API获取所有门店
   */
  const getAllStores = async () => {
    try {
      // 假设门店不多，一次性获取所有
      const res = await fetchStores({ page: 1, pageSize: 100 });
      if (res.list) {
        stores.value = res.list;
        // 如果没有当前选中的门店ID，或ID无效，则默认选中第一个
        if (!currentStoreId.value || !stores.value.some(s => s.id === currentStoreId.value)) {
          currentStoreId.value = stores.value.length > 0 ? stores.value[0].id : null;
        }
      }
    } catch (error) {
      console.error('获取门店列表失败:', error);
    }
  };

  /**
   * 设置当前门店
   * @param id 门店ID
   */
  const setCurrentStoreId = (id: number) => {
    currentStoreId.value = id;
  };

  return {
    stores,
    currentStoreId,
    currentStore,
    getAllStores,
    setCurrentStoreId,
  };
});